package a.codetop;

import java.util.Stack;

public class _17最长连续括号组合_栈 {

    public int longestValidParentheses(String s) {

        char[] c = s.toCharArray();
        Stack<Integer> stack = new Stack<>();
        int res=0;
        int start=0;

        for(int i=0;i<s.length();i++) {

            //左括号 压索引
            if(c[i]=='(')stack.push(i);

            //右括号 只判断不压
            else if(c[i]==')'){
                //栈空，只有一个),更新start
                if(stack.isEmpty()) start=i+1;
                //栈非空
                else{
                    //先弹
                    stack.pop();
                    //弹后空，证明前面可能存在连续有效括号: ()()4-0=4
                    if(stack.isEmpty()) res=Math.max(res, i-start+1);
                    //弹后非空：(() 2-1=1
                    else res=Math.max(res, i-stack.peek());
                }
            }

        }

        return res;
    }

}
